
package cg.server.game;

import java.util.List;
import java.lang.*;
import java.awt.event.ActionEvent;
import java.io.Serializable;
import javax.swing.JButton;
import javax.swing.JLabel;

/**
 * Spielstand <br><br>
 *
 * Die Klasse Spielstand beinhaltet alle für den Client wichtigen Attributwerte,
 * um diese entsprechend auf dem GUI anzuzeigen. 
 * Von dieser Klasse wird ein Objekt erstellt und so zum Client geschickt.
 *
 * @author Christian Friedli
 * @version 1.0 
 */
public class Spielstand implements Serializable {

    public Spielstand(Spiel sp, Spieler[] Spieler, Reihe[] Reihe) {
        // Spieler
        SpielerName1 = Spieler[1].getName();
        SpielerName2 = Spieler[2].getName();
        SpielerName3 = Spieler[3].getName();
        SpielerName4 = Spieler[4].getName();
        // Spieler Status
        // Aktiver Spieler wird speziel markiert
        Spieler1Aktiv = Spieler[1].IstAktiv();
        Spieler2Aktiv = Spieler[2].IstAktiv();
        Spieler3Aktiv = Spieler[3].IstAktiv();
        Spieler4Aktiv = Spieler[4].IstAktiv();
        // gezogene Karten Spieler 1
        Spieler1Total = Spieler[1].punkteZählen();
        Spieler1Orange = Spieler[1].getAnzahlOrange();
        Spieler1Blau = Spieler[1].getAnzahlBlau();
        Spieler1Gruen = Spieler[1].getAnzahlGruen();
        Spieler1Gelb = Spieler[1].getAnzahlGelb();
        Spieler1Magenta = Spieler[1].getAnzahlMagenta();
        Spieler1Grau = Spieler[1].getAnzahlGrau();
        Spieler1Braun = Spieler[1].getAnzahlBraun();
        // gezogene Karten Spieler 2
        Spieler2Total = Spieler[2].punkteZählen();
        Spieler2Orange = Spieler[2].getAnzahlOrange();
        Spieler2Blau = Spieler[2].getAnzahlBlau();
        Spieler2Gruen = Spieler[2].getAnzahlGruen();
        Spieler2Gelb = Spieler[2].getAnzahlGelb();
        Spieler2Magenta = Spieler[2].getAnzahlMagenta();
        Spieler2Grau = Spieler[2].getAnzahlGrau();
        Spieler2Braun = Spieler[2].getAnzahlBraun();
        // gezogene Karten Spieler 3
        Spieler3Total = Spieler[3].punkteZählen();
        Spieler3Orange = Spieler[3].getAnzahlOrange();
        Spieler3Blau = Spieler[3].getAnzahlBlau();
        Spieler3Gruen = Spieler[3].getAnzahlGruen();
        Spieler3Gelb = Spieler[3].getAnzahlGelb();
        Spieler3Magenta = Spieler[3].getAnzahlMagenta();
        Spieler3Grau = Spieler[3].getAnzahlGrau();
        Spieler3Braun = Spieler[3].getAnzahlBraun();
        // gezogene Karten Spieler 4
        Spieler4Total = Spieler[4].punkteZählen();
        Spieler4Orange = Spieler[4].getAnzahlOrange();
        Spieler4Blau = Spieler[4].getAnzahlBlau();
        Spieler4Gruen = Spieler[4].getAnzahlGruen();
        Spieler4Gelb = Spieler[4].getAnzahlGelb();
        Spieler4Magenta = Spieler[4].getAnzahlMagenta();
        Spieler4Grau = Spieler[4].getAnzahlGrau();
        Spieler4Braun = Spieler[4].getAnzahlBraun();
        // get gezogenen Farbkarte
        GezogeneKarte = sp.getGezogeneKarte();
        // get Stapelkarte gezogen
        stapelkarteGezogen = sp.stapelkarteGezogen;
        // get Letzte Rundekarte gezogen
        letzteRundekarteGezogen = sp.letzteRundekarteGezogen;
        //get aktueller Spieler
        currentPlayer = Spiel.getAktuellerSpieler();
        // get Reiheaktiv
        Reihe1aktiv = Reihe[1].reiheAktiv;
        Reihe2aktiv = Reihe[2].reiheAktiv;
        Reihe3aktiv = Reihe[3].reiheAktiv;
        Reihe4aktiv = Reihe[4].reiheAktiv;
        // Farbkarte auf Reihe 1
        try {
            Reihe11 = Reihe[1].karteVonReihe(0);
            Reihe12 = Reihe[1].karteVonReihe(1);
            Reihe13 = Reihe[1].karteVonReihe(2);
        } catch (Exception ex) {
            // NullPointerExeption falls der Reihe an einer Postion keine 
            // Farbkarte zugeteilt ist.
        }
        // Farbkarte auf Reihe 2
        try {
            Reihe21 = Reihe[2].karteVonReihe(0);
            Reihe22 = Reihe[2].karteVonReihe(1);
            Reihe23 = Reihe[2].karteVonReihe(2);
        } catch (Exception ex) {
            // NullPointerExeption falls der Reihe an einer Postion keine 
            // Farbkarte zugeteilt ist.
        }
        // Farbkarte auf Reihe 3
        try {
            Reihe31 = Reihe[3].karteVonReihe(0);
            Reihe32 = Reihe[3].karteVonReihe(1);
            Reihe33 = Reihe[3].karteVonReihe(2);
        } catch (Exception ex) {
            // NullPointerExeption falls der Reihe an einer Postion keine 
            // Farbkarte zugeteilt ist.
        }
        // Farbkarte auf Reihe 4
        try {
            Reihe41 = Reihe[4].karteVonReihe(0);
            Reihe42 = Reihe[4].karteVonReihe(1);
            Reihe43 = Reihe[4].karteVonReihe(2);
        } catch (Exception ex) {
            // NullPointerExeption falls der Reihe an einer Postion keine 
            // Farbkarte zugeteilt ist.
        }
    }
    // Spielernamen
    public String SpielerName1;
    public String SpielerName2;
    public String SpielerName3;
    public String SpielerName4;
    // Spieler Status
    // Aktiver Spieler wird auf dem GUI speziel markiert
    public boolean Spieler1Aktiv;
    public boolean Spieler2Aktiv;
    public boolean Spieler3Aktiv;
    public boolean Spieler4Aktiv;
    // gezogene Karten Spieler 1
    public int Spieler1Total;
    public int Spieler1Orange;
    public int Spieler1Blau;
    public int Spieler1Gruen;
    public int Spieler1Gelb;
    public int Spieler1Magenta;
    public int Spieler1Grau;
    public int Spieler1Braun;
    // gezogene Karten Spieler 2
    public int Spieler2Total;
    public int Spieler2Orange;
    public int Spieler2Blau;
    public int Spieler2Gruen;
    public int Spieler2Gelb;
    public int Spieler2Magenta;
    public int Spieler2Grau;
    public int Spieler2Braun;
    // gezogene Karten Spieler 3
    public int Spieler3Total;
    public int Spieler3Orange;
    public int Spieler3Blau;
    public int Spieler3Gruen;
    public int Spieler3Gelb;
    public int Spieler3Magenta;
    public int Spieler3Grau;
    public int Spieler3Braun;
    // gezogene Karten Spieler 4
    public int Spieler4Total;
    public int Spieler4Orange;
    public int Spieler4Blau;
    public int Spieler4Gruen;
    public int Spieler4Gelb;
    public int Spieler4Magenta;
    public int Spieler4Grau;
    public int Spieler4Braun;
    // Sind die Reihen aktiv?
    public boolean Reihe1aktiv;
    public boolean Reihe2aktiv;
    public boolean Reihe3aktiv;
    public boolean Reihe4aktiv;
    // Farbkarten Reihe 1
    public Farbkarte Reihe11;
    public Farbkarte Reihe12;
    public Farbkarte Reihe13;
    // Farbkarten Reihe 2
    public Farbkarte Reihe21;
    public Farbkarte Reihe22;
    public Farbkarte Reihe23;
    // Farbkarten Reihe 3
    public Farbkarte Reihe31;
    public Farbkarte Reihe32;
    public Farbkarte Reihe33;
    // Farbkarten Reihe 4
    public Farbkarte Reihe41;
    public Farbkarte Reihe42;
    public Farbkarte Reihe43;
    public Farbkarte GezogeneKarte;
    // Wurde eine Karte vom Stapel genommen?
    public boolean stapelkarteGezogen;
    // wurde die letzte Rundekarte gezogen?
    public boolean letzteRundekarteGezogen;
    // Der Spieler welcher an der Reihe ist
    public int currentPlayer;
    // Attribut, dass der Client weis, welcher Spieler er ist
    public int iAmPlayer;
}
